In virtualized and/or cloud environments, a provider often receives requests from a user for access to a resource. For example, a user may contact a software provider to request a license to access a software feature. In order to grant the user access to the resource, the provider uses some sort of verification that the user is permitted access to the resource. One existing technique for granting access to a resource includes identifying a user based on specific hardware identifiers associated with hardware associated with a user system. Another existing technique for granting access to a resource includes the use of external hardware keys (e.g., USB dongles). Both these technologies are not suitable for use in cloud/virtual environments or with large customer data centers. Virtual environments can be used to duplicate hardware identifiers. Hardware keys fail, get lost or damaged in handling in data centers and cannot be used in cloud environments. Further, multiple hardware keys are required in high-availability applications.